Automatically suggesting project affiliations

ABSTRACT

Disclosed are systems, methods, and non-transitory computer-readable storage media for managing projects using references between the project and project items. Project items can be, for example, synchronized content items, collaborative content items, other projects, folders, tasks, user accounts, etc. The content management system can create a project identifier for managing data and/or people associated with a project. In various implementations, the content management system can store references between the project and project items in one or more folders associated with the project, in a database, in content item metadata, etc. In some implementations, the storage location of a content item does not affect whether it is associated with the project. When a project is selected by a user, the content management system can generate project view that presents various project items associated with the project in a convenient and easy to access graphical user interface.

RELATED APPLICATION

This Application claims the benefit of U.S. Provisional Application No.62/440,261, filed on Dec. 29, 2016, the content of which is incorporatedherein by reference in its entirety.

BACKGROUND

There are many software applications that assist users in managingprojects. Often these software applications are complicated anddifficult to use. Many times several different software applications arerequired to manage the various tasks, documents types, schedules,communications, and other project related activities and files. Usingthese existing systems to manage a project can be difficult to learn,burdensome to use, and time consuming for the user.

SUMMARY

Additional features and advantages of the disclosure will be set forthin the description which follows, and in part will be apparent from thedescription, or can be learned by practice of the herein disclosedprinciples. The features and advantages of the disclosure can berealized and obtained by means of the instruments and combinationsparticularly pointed out in the appended claims. These and otherfeatures of the disclosure will become more fully apparent from thefollowing description and appended claims, or can be learned by thepractice of the principles set forth herein.

Disclosed are systems, methods, and non-transitory computer-readablestorage media for managing projects using references between the projectand project items. Project items can be, for example, synchronizedcontent items, collaborative content items, other projects, folders,tasks, user accounts, etc. The content management system can create aproject identifier for managing data and/or people associated with aproject. In various implementations, the content management system canstore references between the project and project items in one or morefolders associated with the project, in a database, in content itemmetadata, etc. In some implementations, the storage location of acontent item does not affect whether it is associated with the project.

When a project is selected by a user, the content management system cangenerate project view that presents various project items associatedwith the project in a convenient and easy to access graphical userinterface. A project view can provide access to many different types ofcontent items that may be stored in many different locations whilesimultaneously providing information about the users associated with aproject and what actions these users have performed in relation toproject items.

Disclosed are systems, methods, and non-transitory computer-readablestorage media for automatically suggesting project affiliations. Forexample, the content management system can track user behavior whileusing the content management system. The content management system cantrack user behavior with respect to content items managed by the contentmanagement system and with respect to other users. For example, thecontent management system can store affiliation data that describeswhich content items a user has viewed, edited, shared, etc. The contentmanagement system can store affiliation data that describes which otherusers the user has interacted with (e.g., viewed, edited, shared,commented on, etc.). The content management system can store affiliationdata that describes which projects a user is a member of and whichprojects a user has viewed or interacted with. The content managementsystem can suggest relationships between users, content items, and/orprojects based on the affiliation data.

BRIEF DESCRIPTION OF THE DRAWINGS

The above-recited and other advantages and features of the disclosurewill become apparent by reference to specific embodiments thereof whichare illustrated in the appended drawings. Understanding that thesedrawings depict only example embodiments of the disclosure and are nottherefore to be considered to be limiting of its scope, the principlesherein are described and explained with additional specificity anddetail through the use of the accompanying drawings in which:

FIG. 1A shows an example configuration of devices and a network inaccordance with some embodiments;

FIG. 1B shows an example collaborative content item management module,according to some embodiments;

FIG. 2 is a block diagram of an example system for managing project datain a content management system;

FIG. 3 illustrates an example graphical user interface for presenting aprojects list;

FIG. 4 illustrates an example graphical user interface for presenting aproject view;

FIG. 5 illustrates an example graphical user interface 500 for adding alink to a project.

FIG. 6A illustrates an example graphical user interface 600 for adding acontent item to a project.

FIG. 6B illustrates an example graphical user interface for creating anew project;

FIG. 7 illustrates an example graphical user interface for presentingsuggested content for a project;

FIG. 8 illustrates an example graphical user interface for presentingpinned content and/or related projects;

FIG. 9 illustrates an example graphical user interface for suggestingcontent items and/or project members for a selected project;

FIG. 10 is a flow diagram of an example process 1000 for managing aproject using links to project content.

FIG. 11A is a flow diagram of an example process 1100 for generatingmembership, content, and/or associated project suggestions for aselected project.

FIG. 11B is a flow diagram of an example process 1130 for generating aproject suggestion for a selected content item.

FIG. 11C is a flow diagram of an example process 1160 for generating arelevance score between a project and a project item.

FIG. 12A shows an example possible system embodiment for implementingvarious embodiments of the present technology; and

FIG. 12B shows an example possible system embodiment for implementingvarious embodiments of the present technology.

DETAILED DESCRIPTION

Various embodiments of the disclosure are discussed in detail below.While specific implementations are discussed, it should be understoodthat this is done for illustration purposes only. A person skilled inthe relevant art will recognize that other components and configurationsmay be used without parting from the spirit and scope of the disclosure.

The disclosed technology addresses the need in the art for an easy,simple, and convenient way for users to manage project data. Byassociating project data managed by the content management system with aproject identifier, as described herein, users are able to accessmultiple types of project data for a specific project by selecting thecorresponding project identifier. Moreover, since the project data isactually linked to the project, the project can include content that isstored internally and/or externally to the content management system.Thus, a wide variety of content item types (e.g., synchronized contentitems, collaborative content items, web pages, etc.) can be added to theproject regardless of where the content is actually stored.

Additionally, since the content management system can synchronize someof the project data with the computing devices associated withmembers/users of the project, project members can access this projectdata through the content management system's servers or on the localfile system of the users' devices (e.g., when a user's device is notconnected to the network). The technology disclosed herein improves theefficiency of both user device and content management system serverdevices by reducing the number of software applications a userpreviously had to install on the user's device to perform projectmanagement tasks. Moreover, by managing project data using links (e.g.,instead of making copies of project data), the user device and/or thecontent management system servers are required to use fewer resources tostore and manage project data.

With respect to implementing various embodiments of the disclosedtechnology, an example system configuration 100 is shown in FIG. 1A,wherein electronic devices communicate via a network for purposes ofexchanging content and other data. The system can be configured for useon a wide area network such as that illustrated in FIG. 1. However, thepresent principles are applicable to a wide variety of networkconfigurations that facilitate the intercommunication of electronicdevices. For example, each of the components of system 100 in FIG. 1Acan be implemented in a localized or distributed fashion in a network.

In system 100, a user (e.g., an individual, group of users, company,etc.) can interact with content management system 106 (e.g., an onlinesynchronized content management system) through client devices 102 ₁,102 ₂, . . . , 102 _(n) (collectively “102”) connected to network 104 bydirect and/or indirect communication. Content management system 106 caninclude a single computing device (e.g., a server) or multiple computingdevices (e.g., multiple servers) that are configured to perform thefunctions and/or operations necessary to provide the services describedherein. Content management system 106 can support connections from avariety of different client devices, such as: desktop computers; mobilecomputers; mobile communications devices, e.g. mobile phones, smartphones, tablets; smart televisions; set-top boxes; and/or any othernetwork enabled computing devices. Client devices 102 can be of varyingtype, capabilities, operating systems, etc. Furthermore, contentmanagement system 106 can concurrently accept connections from andinteract with multiple client devices 102.

A user can interact with content management system 106 via a client-sideapplication installed on client device 102 _(i). In some embodiments,the client-side application can include a content management systemspecific component. For example, the component can be a stand-aloneapplication, one or more application plug-ins, and/or a browserextension. However, the user can also interact with content managementsystem 106 via a third-party application, such as a web browser, thatresides on client device 102 _(i) and is configured to communicate withcontent management system 106. In either case, the client-sideapplication can present a user interface (UI) for the user to interactwith content management system 106. For example, the user can interactwith the content management system 106 via a client-side applicationintegrated with the file system or via a webpage displayed using a webbrowser application.

Content management system 106 can enable a user to store content items,as well as perform a variety of content management tasks, such asretrieve, modify, browse, and/or share the content items. Furthermore,content management system 106 can enable a user to access the contentfrom multiple client devices 102. For example, client device 102 _(i)can upload content to content management system 106 via network 104.Later, the same client device 102 _(i) or some other client device 102_(j) can retrieve the content from content management system 106.

To facilitate the various content management services, a user can createan account with content management system 106. User account database 150can maintain the account information. User account database 150 canstore profile information for registered users. In some cases, the onlypersonal information in the user profile can be a username and/or emailaddress. However, content management system 106 can also be configuredto accept additional user information such as birthday, address, billinginformation, etc.

User account database 150 can include account management information,such as account type, usage information, (e.g., file access or edithistory), storage space used, content storage locations, securitysettings, personal configuration settings, content sharing data, etc.Account management module 124 can be configured to update and/or obtainuser account details in user account database 150. The accountmanagement module 124 can be configured to interact with any number ofother modules in content management system 106.

An account can be used to store content items, such as digital data,documents, collaborative content items, text files, audio files, imagefiles, video files, webpages, executable files, binary files,placeholder files that reference other content items, etc., from one ormore client devices 102 authorized on the account. The content items canalso include collections for grouping content items together withdifferent behaviors, such as folders, playlists, albums, etc. Forexample, an account can include shared collections or group collectionsthat are linked with and available to multiple user accounts. Thepermissions for multiple users may be different for a shared collection.

The content items can be stored in content storage 160. Content storage160 can be a storage device, multiple storage devices, or a server.Alternatively, content storage 160 can be a cloud storage provider ornetwork storage accessible via one or more communications networks.Content management system 106 can hide the complexity and details fromclient devices 102 so that client devices 102 do not need to knowexactly where or how the content items are being stored by contentmanagement system 106. In some embodiments, content management system106 can store the content items in the same collection hierarchy as theyappear on client device 102 _(i). However, content management system 106can store the content items in its own order, arrangement, or hierarchy.Content management system 106 can store the content items in a networkaccessible storage (NAS) device, in a redundant array of independentdisks (RAID), etc. Content storage 160 can store content items using oneor more partition types, such as FAT, FAT32, NTFS, EXT2, EXT3, EXT4,HFS/HFS+, BTRFS, and so forth.

Content storage 160 can also store metadata describing content items,content item types, and the relationship of content items to variousaccounts, collections, or groups. The metadata for a content item can bestored as part of the content item or can be stored separately. In onevariation, each content item stored in content storage 160 can beassigned a system-wide unique identifier.

Content storage 160 can decrease the amount of storage space required byidentifying duplicate content items or duplicate segments of contentitems. Instead of storing multiple copies, content storage 160 can storea single copy and then use a pointer or other mechanism to link theduplicates to the single copy. Similarly, content storage 160 can storecontent items more efficiently, as well as provide the ability to undooperations, by using a content item version control that tracks changesto content items, different versions of content items (includingdiverging version trees), and a change history. The change history caninclude a set of changes that, when applied to the original content itemversion, produce the changed content item version.

Content management system 106 can be configured to support automaticsynchronization of content items from one or more client devices 102.The synchronization can be platform agnostic. That is, the content itemscan be synchronized across multiple client devices 102 of varying type,capabilities, operating systems, etc. For example, client device 102_(i) can include client software, which synchronizes, via asynchronization module 132 at content management system 106, content inclient device 102 _(i)'s file system with the content in an associateduser account. In some cases, the client software can synchronize anychanges to content in a designated collection and its sub-collections,such as new, deleted, modified, copied, or moved content items orcollections. The client software can be a separate software application,can integrate with an existing content management application in theoperating system, or can be some combination thereof. In one example ofclient software that integrates with an existing content managementapplication, a user can manipulate content items directly in a localcollection, while a background process monitors the local collection forchanges and synchronizes those changes to content management system 106.Conversely, the background process can identify content items that havebeen updated at content management system 106 and synchronize thosechanges to the local collection.

A user can view or manipulate content via a web interface generated andserved by user interface module 122. For example, the user can navigatein a web browser to a web address provided by content management system106. Changes or updates to content in the content storage 160 madethrough the web interface, such as making edits to text or media thatare part of the content item, can be propagated to other client devices102 authorized to access the content item. For example, multiple clientdevices 102, each with their own client software, can be associated witha single account and content items in the account can be synchronizedbetween each of the multiple client devices 102.

Content management system 106 can include a communications interface 120for interfacing with various client devices 102, and can interact withother content and/or service providers 109 ₁, 109 ₂, . . . , 109 _(n)(collectively “109”) via an Application Program Interface (API). Certainsoftware applications can access content storage 160 via an API onbehalf of a user. For example, a software package, such as an apprunning on a smartphone or tablet computing device, can programmaticallymake calls directly to content management system 106, when a userprovides credentials, to read, write, create, delete, share, orotherwise manipulate content. Similarly, the API can allow users toaccess all or part of content storage 160 through a web site.

Content management system 106 can also include authenticator module 126,which can verify user credentials, security tokens, API calls, specificclient devices, and so forth, to ensure only authorized clients andusers can access content items. Further, content management system 106can include analytics module 134 module that can track and report onaggregate file operations, user actions, network usage, total storagespace used, as well as other technology, usage, or business metrics. Aprivacy and/or security policy can prevent unauthorized access to userdata stored with content management system 106.

Content management system 106 can include sharing module 130 formanaging sharing content items. Sharing content items can include makingthe content item accessible from any computing device in networkcommunication with content management system 106. Sharing content itemscan also include linking a content item in content storage 160 with twoor more user accounts so that each user account has access to thecontent item. The sharing can be performed in a platform agnosticmanner. That is, the content can be shared across multiple clientdevices 102 of varying type, capabilities, operating systems, etc. Thecontent can also be shared across varying types of user accounts.

In some implementations, to share a content item, sharing module 130 canbe configured to add a user account identifier to the content entryassociated with the content item, thus granting the added user accountaccess to the content item. Sharing module 130 can also be configured toremove user account identifiers from a content entry to restrict a useraccount's access to the content item.

In some implementations, to share a content item, sharing module 130 canbe configured to generate a custom network address, such as a uniformresource locator (URL), which allows web browsers to access the contentin content management system 106, which in some implementations, can beallowed without any authentication. To accomplish this, sharing module130 can be configured to include content identification data in thegenerated URL, which can later be used to properly identify and returnthe requested content item. For example, sharing module 130 can beconfigured to include the user account identifier and the content pathin the generated URL. Upon selection of the URL, the contentidentification data included in the URL can be transmitted to contentmanagement system 106 which can use the received content identificationdata to identify the appropriate content entry and return the contentitem associated with the content entry.

In some implementations, content management system 106 can includecollaborative content item management module 136. Collaborative contentitem management module 136 can provide an interactive content itemcollaboration platform whereby users can simultaneously createcollaborative content items, comment in the collaborative content items,and manage tasks within the collaborative content items. Collaborativecontent items can be files that users can create and edit using acollaborative content items editor, and can contain collaborativecontent item elements. Collaborative content item elements may include acollaborative content item identifier, one or more author identifiers,collaborative content item text, collaborative content item attributes,interaction information, comments, sharing users, etc. Collaborativecontent item elements can be stored as database entities, which allowsfor searching and retrieving the collaborative content items. Multipleusers may access, view, edit, and collaborate on collaborative contentitems at the same time or at different times. In some embodiments thiscan be managed as multiple users access a content item through a webinterface and there they can work on the same copy of the content itemat the same time.

In some implementations, portions of a collaborative content item can berepresented by a list of attributed text (e.g., a string of text whereeach character or character range has a set of attributes). An attributecan be a (key, value) pair: for example, (“bold”, “true”), (“list”,“bullet1”), or (“author”, authorID). Furthermore, a collaborativecontent item can be stored as a sequence of change sets. A change setrepresents an edit to a particular version of a collaborative contentitem. Applying a change sets can insert and delete characters and applyattributes to ranges. Thus, a given change set can be applied to aparticular collaborative content item representation to generate anothercollaborative content item representation. For example, a collaborativecontent item representation “abc\n” and a change set “insert d atposition 2”, which when applied, would yield a collaborative contentitem representation “abdc\n”. Applying all of the change sets, in agiven order, to an initial version of a collaborative content itemrepresentation, can produce a current version of the collaborativecontent item comprising a list of attributed text representation.Multiple users may access, view, edit, and collaborate on acollaborative content item at the same time or at different times. Insome embodiments this can be managed by providing multiple users withaccess to a content item through a web interface where they can interactwith a same copy of the content item at the same time.

While content management system 106 is presented with specificcomponents, it should be understood by one skilled in the art, that thearchitectural configuration of system 106 is simply one possibleconfiguration and that other configurations with more or fewercomponents are possible.

FIG. 1B shows an example collaborative content item management module136, according to some embodiments. Collaborative content itemmanagement module 136 may include productivity management gatheringmodule 172, collaborative content item processing interface module 174,collaborative content item editor module 176, user notification module178, collaborative content item presentation module 180, andproductivity management modification module 182. One or more ofproductivity management gathering module 172, collaborative content itemprocessing interface module 174, collaborative content item editormodule 176, user notification module 178, collaborative content itempresentation module 180, and productivity management modification module182 may be coupled to one another or to modules not explicitly shown.

Productivity management gathering module 172 may be configured to gatherproductivity data from productivity management system 140. In variousembodiments, productivity management gathering module 172 identifies anevent and gathers information related to the event. For instance,productivity management gathering module 172 may gather a specificcalendar entry and/or a specific task from an online calendar.Productivity management gathering module 172 may further gatherinformation from the calendar entry or gather information related to thecalendar entry such as time(s), date(s), relevant locations, title(s),agenda(s), summaries, description(s), and/or attendees related to theevent. Productivity management gathering module 172 may provide theproductivity data to the other modules of collaborative content itemmanagement module 136.

Collaborative content item processing interface module 174 may beconfigured to interface with collaborative content item managementmodule 136. In various embodiments, collaborative content itemprocessing interface module 174 may provide collaborative content itemsto one or more modules of collaborative content item management module136, as described further herein.

Collaborative content item editor module 176 may be configured to createand/or modify collaborative content items. A collaborative content itemmay be created in a variety of ways. In some embodiments, collaborativecontent item editor module 176 enables creation of the collaborativecontent item into the content management system 106. Collaborativecontent item editor module 176 may enable access to or be anycollaborative content item editing application (e.g., Microsoft Word®,Google Docs®, or the like) either in the cloud or executed locally. Inone example, content management system 106 may provide to one of clientdevices 102 a user interface element (e.g., a box or a button) thatallows creation of a new collaborative content item.

In some embodiments, collaborative content item editor module 176 maycreate the collaborative content item in conjunction with theproductivity management system 140. For example, collaborative contentitem editor module 176 may provide a suggestion to a user to create orinvoke a collaborative content item associated with an upcoming event.In various embodiments, collaborative content item management module 136may identify a user that is opening or otherwise using collaborativecontent item editor module 176. Productivity management gathering module172 may identify an upcoming event for the user on the user's calendar.Subsequently, collaborative content item editor module 176 may provide asuggestion to the user to create or invoke the collaborative contentitem associated with the upcoming event.

Although it is discussed that collaborative content item editor module176 may provide a suggestion to the user to create or invoke thecollaborative content item associated with the upcoming event, it willbe appreciated that the suggestion to create or invoke the collaborativecontent item may be made by any application. For example, a user may loginto and/or otherwise access any application or suite of applications.Once the user is identified and an upcoming event is identified on theuser's calendar, any application may provide the user with thesuggestion to create or invoke the collaborative content item associatedwith the upcoming event. The suggestion may be provided to the user inany number of ways. In one example, an application suite managementsystem (e.g., managing a variety of different applications) may providethe suggestion in a notification section of a window. In anotherexample, a workspace may include the suggestion to the user in a sectiondedicated to notifications. In a further example, an email program maygenerate an email containing the suggestion to the user.

If the user requests creation or invocation of the collaborative contentitem in response to the suggestion, collaborative content item editormodule 176 may create or invoke the requested collaborative contentitem. If the application that provided the suggestion to the user is nota collaborative content item editor, then a collaborative content itemeditor may be executed and the requested collaborative content itemcreated and/or invoked in response to the user's request.

In accordance with some embodiments, collaborative content item editormodule 176 may configure the productivity management system 140 toprovide access to the collaborative content item (e.g., using a link,including the collaborative content item, or any other mechanism toenable access to the collaborative content item) in a meeting request, atask entry, or the like. In some embodiments, collaborative content itemeditor module 176 may instruct productivity management system 140 toplace an icon corresponding to a link to the collaborative content itemin the calendar entry, meeting request, task entry, or the like. When auser has opened the link (e.g., by clicking the icon), the user may bedirectly guided to the collaborative content item from the meetingrequest, task entry, or the like. In one example, the link in thecalendar entry may provide the user (e.g., using client device 102)access to a collaborative content item stored in content managementsystem 106 (e.g., in storage accessible through the cloud) or inproductivity management system 140.

Once the user requests to create or invoke the collaborative contentitem, collaborative content item editor module 176 may create and/orinvoke a collaborative content item. The collaborative content item maybe subsequently edited, altered, viewed, changed, stored, and/or thelike by an editing application (e.g., either stored locally on a clientdevice 102 or in the cloud). In various embodiments, one or moredifferent client devices 102 may utilize different editing applicationsto make changes to the collaborative content item. Collaborative contentitem editor module 176 and/or other editing applications may allow forthe collaborative content item to be changed by multiple different usersusing different client devices 102 at the same time or substantially atthe same time (e.g., in real time or substantially in real time).

It will be appreciated that users may be automatically guided to acollaborative content item related to a calendar entry, meeting request,a task entry, or the like without human intervention. In someembodiments, users may be guided to a collaborative content item relatedto a calendar entry, a meeting request, a task entry, or the likewithout having the users separately open collaborative content itemediting applications. Such functionalities may prove particularlyconvenient for users seeking to take, review, or collaborate on notesassociated with an event, as these users need not open applicationsother than productivity management applications.

Collaborative content item editor module 176 may receive from usersadditional content for the collaborative content item. For example,collaborative content item editor module 176 may be configured toreceive from the client devices 102 changes or edits to thecollaborative content item. In various embodiments, the changes mayinclude text, characters strings, or the like. The changes may alsoinclude annotations to the collaborative content item, comments to thecollaborative content item, files to be attached to the collaborativecontent item, pictures to be attached to the collaborative content item,links to be attached to the collaborative content item, tasks related tothe collaborative content item, or the like that can be incorporatedinto the collaborative content item. In various embodiments, edits tothe collaborative content item are collaborative. For instance,collaborative content item editor module 176 may obtain edits (e.g.,text changes and/or additions of audio files, pictures, tables, or thelike) from any number of client devices 102 at a given time (or in realtime). Collaborative edits may be incorporated in a variety of formats,including formats that provide different text attributes such as colors,fonts, styles, or the like for different users.

In various embodiments, collaborative content item editor module 176(and or a security or permissions module associated with a server) mayestablish permissions and/or security for the collaborative contentitem. For example, collaborative content item editor module 176 mayenable event attendees to view and/or make edits to the collaborativecontent item while others may not have rights to view the collaborativecontent items and/or make changes. Permissions and/or security may beenforced in any number of ways. However, access to the collaborativecontent item may, in various embodiments, be provided to attendees ofthe event or a subset of attendees.

In various embodiments, access to the collaborative content item islimited based on storage access rights. For example, a user with accessrights to cloud storage may access, view, and/or make changes to thecollaborative content item. In some embodiments, a user with accessrights assigned by the content management system 106 may access, view,and/or make changes to the collaborative content item.

User notification module 178 may be configured to notify users of eachof the client devices 102 of information related to the state and/orcontents of the collaborative content item. Notifications may be sent,for example as an email notification, a chat message notification, anotification in a display of the collaborative content item, or inrelation to the collaborative content item through a file system orother organizational system. In various embodiments, user notificationmodule 178 provides notifications about changes to the client devices102. For example, user notification module 178 may notify users whethera collaborative content item has been created for an event. As anotherexample, user notification module 178 may notify specific users thatthey have been invited to attend an event.

Collaborative content item presentation module 180 may provide to theclient devices 102 selected collaborative content items. Thecollaborative content items may be displayed in the client devices 102through a native application, an Internet browsing window, or the likesupported by the client devices 102.

It will be appreciated that collaborative content item presentationmodule 180 may restrict writing permissions to the collaborative contentitems at any time. In an example, prior to occurrence of the event,collaborative content item presentation module 180 may restrict writingpermissions to the collaborative content item (and turn thecollaborative content item into a read-only collaborative content item)for all users except the creator or invoker of the collaborative contentitem. In some embodiments, the creator or invoker of the collaborativecontent item may select a subset of recipients to receive writingpermissions.

Collaborative content item presentation module 180 may also support acollaborative content item viewing portal users can use to view existingcollaborative content items. The collaborative content item viewingportal may order specific collaborative content items based on one ormore ordering factors. “Ordering factors,” as used herein, may includeany factors used to order collaborative content items. Ordering factorscan include factors used to order collaborative content itemschronologically. More specifically, in some embodiments, thecollaborative content item viewing portal orders collaborative contentitems according to the date(s) and/or times the collaborative contentitems were created. The collaborative content item viewing portal mayalso order collaborative content items according to the date(s) and/ortime(s) the collaborative content items were edited. In variousembodiments, the collaborative content item viewing portal orderscollaborative content items according to the date(s) and/or time(s) ofcorresponding events to which the collaborative content items wererelated. Ordering factors can also include factors used to ordercollaborative content items according to the preferences of a specificuser, such as whether the user has accepted events to which thecollaborative content items were related.

In some embodiments, a collaborative content item viewing portal may bededicated to a particular user who has received access to thecollaborative content item because the particular user was related to anevent. The user's collaborative content item viewing portal may provideaccess to any number of collaborative content items including thecollaborative content item. The collaborative content items representedin the collaborative content item viewing portal may be ordered in anynumber of ways. For example, the collaborative content item viewingportal may order collaborative content items based on date and time ofcorresponding events.

The collaborative content item viewing portal may support searchfunctions. For instance, the collaborative content item viewing portalmay enable or allow searching for collaborative content items accordingto textual strings, titles, event attendees, and/or other attributes.The search functions may allow a specific user to search one or morecollaborative content items for that user or for other users.

In some embodiments, productivity management modification module 182 maybe configured to coordinate collaborative content items with calendarentries and to enable access to the collaborative content item throughcalendar entries.

FIG. 2 is a block diagram of an example system 200 for managing projectsin a content management system. For example, system 200 can correspondto system 100 of FIG. 1A, described above. As described above, system200 can include content management system 106.

In some implementations, content management system 106 can includeproject module 202. For example, project module 202 can be a softwaremodule installed and/or running on content management system 106.Project module 202 can manage project data (e.g., project members, linksto project content, project tasks, etc.) associated with projects (e.g.,project identifiers). Project module 202 can generate project views(e.g., graphical user interfaces) for presenting project data to a user(e.g., project member). Project module 202 can, for example, storecontent items and/or project data 204 associated with a project incontent storage 160.

In some implementations, project module 202 can suggest projectaffiliations based on the users' behavior. For example, contentmanagement system 106 can monitor user behavior with respect to contentitems, projects, communications with other users, etc. Contentmanagement system 106 can store user behavior data describing the userbehavior in a database (not shown) of content management system 106.Project module 202 can use the user behavior data stored by contentmanagement system 106 to recommend affiliations between users, contentitems, projects, etc. For example, project module 202 can suggest thatdifferent users should be members of the same project. Project module202 can suggest that a content item should be added to a particularproject or particular projects. Project module 202 can suggest otheraffiliations, as described further below.

In some implementations, system 200 can include client device 240. Forexample, client device 240 can correspond to client device 102 _(i)described above. Client device 240 can, for example, be a laptopcomputer, tablet computer, smart phone, wearable device, and/or anyother computing device. Although FIG. 2 illustrates a system 200 havingonly one client device 240 (e.g., client device 102 _(i)), system 200can include many client devices 240 (e.g., client devices 102 _(i)-102_(n)) that interact with content management system 106 and/or projectmodule 202 to manage projects. For example, each member of a project mayhave a different client device 240 that communicates with contentmanagement system 106 to access project data managed by contentmanagement system 106 and/or project module 202.

In some implementations, client device 240 can include contentmanagement system (CMS) client 242. For example, CMS client 242 can be anative application of client device 240. For example, a native softwareapplication can be an application that is built specifically for thehardware and/or software configuration of client device 240. Thus, thegraphical user interfaces (and other functionality) of CMS client 242described below can be implemented using instructions, applicationprogramming interfaces (APIs), and other technologies native to clientdevice 240. To generate the various graphical user interfaces belowand/or implement various features described herein, CMS client 242 canrequest project data (e.g., project content items, project memberidentifiers, tasks, etc.) from project module 202 over a networkconnection (e.g., through network 104). Project module 202 can obtainproject data 204 from content storage 160, for example. CMS client 242can then present the project data on various graphical user interfacesgenerated by CMS client 242.

Alternatively, CMS client 242 can be a web client executed by a webbrowser running on client device 240. Thus, the graphical userinterfaces (and other functionality) of CMS client 240 can beimplemented using instructions, APIs, and other technologies that arenot native to client device 240. For example, CMS client 240 can bebuilt as a web application using non-native web code or instructions.CMS client 240 can be served to a web browser on client device 240 andthe web browser can execute CMS client 240 to present the graphical userinterfaces (and other functionality) to the user, as described in detailbelow. To generate the various graphical user interfaces below and/orimplement various features described herein, CMS client 242 (e.g., theweb browser) can request various project views (e.g., graphical userinterfaces, web pages, etc.) from project module 202. Project module 202can generate the project views (e.g., the graphical user interfacesdescribed below) for presenting project data (e.g., project contentitems, project member identifiers, tasks, etc.) and send the projectviews to CMS client 242 over a network connection (e.g., through network104). For example, project module 202 can obtain project data 204 fromcontent storage 160, generate the project views based on the projectdata, and send the project views to CMS client 242. CMS client 242 canthen present the project views on a display of client device 240.

In some implementations, client device 240 can include CMS daemon 244.For example, CMS daemon 244 can be a client of content management system106 that maintains synchronization of data between content managementsystem 106 and client device 240. For example, client device 240 caninclude managed content 250. Managed content 250 can be a portion of thefile system on client device 240 managed by content management system106 and/or CMS daemon 244. CMS daemon 244 and/or content managementsystem 106 can synchronize content items, project data, etc., stored inmanaged content 250 with content items, project data, etc., stored incontent storage 160. In particular, when the user of client device 240is a member of a project corresponding to project data 204, CMS daemon244 and/or content management system 106 can synchronize project data204 and project data 252 so that project data 204 and project data 252include the same project content items, and/or project data (e.g.,links, tasks, etc.). Thus, a user of client device 240 can accessproject data 204/252 stored in content storage 160 through CMS client242 or through managed content 250 stored in the local file system onclient device 240.

FIG. 3 illustrates an example graphical user interface 300 forpresenting projects. For example, CMS client 242 can present graphicaluser interface (GUI) 300 on a display of client device 240. In someimplementations, GUI 300 can include side panel 301 presenting variousgraphical elements for viewing content management system data associatedwith a content management system user. While side panel 301 is notrepresented in each figure described below, side panel 301 can bepresented along with each graphical user interface described herein. Inthe example illustrated by FIG. 3, the user has selected graphicalelement 302 to view projects managed by content management system 106.Upon receiving the selection of graphical element 302, CMS client 242can present projects view 304.

In some implementations, projects view 304 can present projects that arerelevant to the user. For example, projects view 304 can present project322, project 340 and/or project 344. Each of the projects presented inprojects view 304 can have a corresponding project identifier, asdescribed above. A user can cause content management system 106 tocreate a new project, and corresponding project identifier, by selectinggraphical element 314. Projects and project data can be shared withand/or accessible by other users of content management system 106. Forexample, projects can include a team of people that perform varioustasks to accomplish the goals of the project. Thus, the project datacorresponding to projects 322, 340 and/or 344 can be shared with otherusers (e.g., project members) of content management system 106. To sharethe project data with members of a project, members of the project canbe granted permissions to view, edit, share, comment on, link, orotherwise interact with project data.

In some implementations, the members of each project 322, 340 and/or 344can be represented in areas 324, 342, and/or 346, respectively, bygraphical elements (e.g., images, initials, avatars, etc.). For example,project members can be users of content management system 106 that havepermissions to access a project or project data. Permissions can specifywhich actions a project member can take with respect to content itemsassociated with the project and how representations of the content itemsare arranged in a hierarchy under the project identifier. For example,permissions can specify whether a project member can open, edit, orshare the associated content items; comment on the project or onassociated content items; invite other users to be project members; addand/or assign tasks; and/or assign project roles. The collection ofgraphical elements representing members of a corresponding project canbe referred to as a “face pile.”

In some implementations, the face pile can be arranged according to aproject member's contribution to the project. For example, contentmanagement system 106 can track the number of content item edits,comments, tasks, etc., associated with users (e.g., project members) ofcontent management system 106. When presenting a face pile associatedwith a project, content item, task, etc., content management system 106can present the graphical elements representing each project member oruser according to the user's contribution to the project (e.g., whenpresenting project level items) and/or content item (e.g., whenpresenting individual content items, folders, etc.). For example, userswho contribute a higher number of edits, comments, tasks, content, etc.,can be presented at a higher position in the face pile (e.g., to theleft, towards the top, etc.) than members or users who contributerelatively fewer edits, comments, tasks, etc. Alternatively, a projectmember's contribution to a project can be determined based on how longthe project member has been a member of the project. For example, onemetric for determining a project member's contribution can be the periodof time a project member has been associated with a project. Thus, aproject member having served the project for a longer period of timethan other project members can be placed at a more prominent position inthe face pile relative to other project members (e.g., on top, to theleft, etc.). Additionally or alternatively, the representations of theproject members in the face pile can be arranged or ordered according tohow recently each project member has accessed the project. For example,members who have most recently accessed the project may be presented ina more prominent position than members who have not accessed the projectin a while.

In some implementations, the face pile can be arranged according to aproject member's role in the project. For example, project module 202can manage roles for members of a project. The roles can be configurableby members of a project such that role labels (e.g., titles) can becreated by members of the project. Thus, two different projects candefine different roles for project members. For example, a project canhave a “project manager” role, an “engineering manager” role, a“designer” role, and/or other roles. When presenting a face pile for aproject, the graphical element representing the project member who hasthe “project manager” role can be presented at the first position (e.g.,left most, right most, top, etc.) of the face pile so that the projectmanager can be quickly identified by other users. In someimplementations, a project member's role can be a factor in determiningthe project member's level of contribution to the project.

A mention can be a reference that links an associated content item orproject item to a particular user. In some implementations, a user cancreate a mention by entering a pre-defined character sequence (e.g. “@”)followed by a designation of a user identifier. For example, whencreating a task in a content item, a user can assign the task to aparticular user by mentioning the assigned user in the task. As a morespecific example, if a task is created by entering the charactersequence “[ ]”, this task can be assigned to a user “Bob” by enteringthe character sequence: “[ ] @Bob”.

In some implementations, project module 202 can use project roles toaddress comments, assign tasks, share content items, and/or make otherassociations. For example, a user of content management system 106 canenter a comment in a content item addressed to the project manager of“Project Widget” (e.g., “@ProjectWidgetManager”). Content managementsystem 106 can determine the user who is the project manager for“Project Widget” based on the roles assigned in the project “ProjectWidget” and notify the user who has the project manager role of thecomment addressed to the project manager. Similarly, users can assigntasks to roles. For example, a design task can be assigned to the userhaving the “designer” role by at (@) mentioning the designer role in atask (e.g., “@ProjectWidgetDesigner”). In some implementations,resolving the target user of a role-based mention can depend on theproject the mention is associated with. For example, when adding a taskto a project A, a user can assign the task to the project's owner bymentioning @projectOwner. In response, content managements system 106can determine the user assigned to the owner role for project A andcreate an association between the user and the task. This associationcan be determined by retrieving a mapping between the project and theproject's roles. If the role is reassigned to a different user, the(task, target user)-association can be automatically updated, such as byupdating an explicit mapping between the new user and the task orthrough the updated project owner role mapping. Thus, the same projectrole mention (e.g., @projectAdmin) can map to different users dependingon the roles assigned in an associated project.

In some implementations, content items can be shared with roles. Forexample, there may be some project content items that should only beaccessible to the project manager and/or other high-level members of theproject. Instead of changing permissions assigned to individual userswhen the people or users associated with these roles changes, thesecontent items can be shared with the roles (e.g., project manager,engineering manager, etc.). Then, when the users assigned to the roleschange, the old project manager can automatically lose her permissionsto access the project content items and the new project manager canautomatically gain permission to access the project content items.

In some implementations, projects view 304 can include featured projectsarea 320. For example, featured projects area 320 can includerepresentations of projects that are featured or important to a company,group, or other endeavor. For example, a company officer may start aproject associated with an important company-wide initiative. Thecompany officer (e.g., user) can provide input identifying the projectas a featured or important project for the company. In otherimplementations, content management system 106 can determine that aproject is important and should be featured based on the number ofproject members in the project and/or the popularity of the project(e.g., how many users are viewing or accessing the project). Forexample, project module 202 can determine that project 322 is animportant project based on one or more of the criteria above and causeproject 322 to be presented in featured projects area 320 when GUI 300is presented by client device 240. In some implementations, featuredprojects 320 can be user-specific such that the projects selected asfeatured for a particular user can vary depending on the user'scharacteristics. Any number of characteristics can be used to selectprojects such as team or group membership, location of the project,location of project team members, content item access or sharinghistory, device type, etc. For example, a particular project can befeatured for a user when the user has above a threshold number ofinteractions with content items in the particular project or when commongroup membership between the user and members of the particular projectis above a threshold number of members.

In some implementations, projects view 304 can include user project area330. For example, user projects area 330 can include projects associatedwith the user or projects where the user is a member. A user may beassociated with a project if the user has previously been a member ofthe project (and perhaps no longer is a member), if the user haspreviously worked on content items associated with the project, if theuser has worked or collaborated with members of the project, and/or ifthe project or project data is otherwise connected to the user. In someimplementations, the user can filter or sort the projects presented inuser projects are 330. For example, the user can select graphicalelement 332 to cause CMS client 242 to present projects that the userhas recently visited or viewed. The user can select graphical element334 to cause CMS client 242 to present projects that the user manages,owner, or created. The user can select graphical element 336 to causeCMS client 242 to present all projects for which the user is a member.The user can select graphical element 338 to cause CMS client 242 topresent projects that have been archived by content management system106. In response to the user selection of one of graphical elements 332,334, 336 and/or 338, CMS client 242 can request information describingthe corresponding projects (e.g., project identifiers, project metadata,project membership information, etc.) from content management system 206and present the project information (e.g., representations of theprojects and/or project membership), in user project area 330 on GUI300.

In some implementations, the user can select a project to view projectcontent items and other project data associated with the project. Forexample, the user can select project 340 to cause CMS client 242 topresent GUI 400 of FIG. 4.

FIG. 4 illustrates an example graphical user interface 400 forpresenting a project view. For example, CMS client 242 can present GUI400 on a display of client device 240 in response to the user selectingproject 340 of FIG. 3. GUI 400 can present a view of a project selectedby the user. The project view presented by GUI 400 can include variouscontent items and/or other project data associated with project 340(e.g., “Project Widget”) selected by the user from GUI 300, for example.

In some implementations, GUI 400 can include graphical element 402representing the project presented by GUI 400. For example, graphicalelement 402 can be a banner presented across the top of GUI 400.Graphical element 402 can include an image or other graphical elementrepresenting the project 340. The aesthetic provided by graphicalelement 402 can provide a means by which a viewing user can distinguishproject 340 from other projects. In some implementations, graphicalelement 402 can be customized according to individual user preferences.For example, the user can change the image presented by graphicalelement 402 by selecting another image. Thus, graphical element 402 canbe different for each member of the project.

In some implementations, graphical element 402 can include graphicalelement 404 representing the selected project 340. For example,graphical element 404 can have a specific icon or shape (e.g., hexagon)that distinguishes a content item associated with a project from otheritems that are not associated with projects. Stated differently, theshape of graphical element 404 can allow users to quickly distinguishbetween content items that are associated with projects and contentitems that have no project affiliation. For example, a content itemassociated with a project can be presented with graphical element 404(e.g., a hexagon), while content items that are not associated with aproject may be presented with other corresponding shapes or icons suchas a square or rectangular graphical representation. In addition tohaving a unique shape associated with projects, graphical element 404may include a visual identifier, such as an image or color, that isspecific to project 340. Thus, when a content item associated withproject 340 is presented with graphical element 404, the user canquickly identify with which project the content item is associated.

In some implementations, graphical element 402 can include an identifierfor the selected project. For example, graphical element 402 can includegraphical element 406 that provides a textual representation (e.g.,project identifier) of the selected project 340.

In some implementations, graphical element 402 can include graphicalelement 408 for searching content items managed by content managementsystem 106. For example, the user can provide text input to graphicalelement 408 to specify search parameters. CMS client 242 can send thesearch parameters to content management system 106 in a search request.Content management system 106 can return to CMS client 242 searchresults (e.g., content items, comments, tasks, users, projects, contentitem collections, etc.) that match the search parameters. CMS client 242can then present the search results on a search results GUI (not shown).

In some implementations, graphical element 402 can include graphicalelement 410 for accessing notifications. For example, when anotification is sent to the user or to a project associated with theuser, graphical element 410 can indicate that a new notification hasbeen received. The user can select graphical element 410 to cause CMSclient 242 to present the notifications on a GUI (not shown).

In some implementations, graphical element 402 can include graphicalelement 412. For example, graphical element 412 can be a graphicalrepresentation (e.g., image, avatar, icon, etc.) of the user who iscurrently signed in to content management system 106 through CMS client242.

In some implementations, GUI 400 can include project content area 420.For example, content area 420 can present representations of contentitems linked to the selected project 340. For example, rather thanhaving project content items stored within a project specific and/ordistinct project storage location, project data can include links (e.g.,references, uniform resource locators ‘URL’, etc.) to content itemsexternal to the project and/or content management system 106. A user canactuate (e.g., click, right click, control click, tap, hover over, etc.)a link to view the corresponding content items. In some implementations,multiple projects can link to and/or include the same content items. Todecrease storage requirements and eliminate the need to replicatechanges made to a content item in one project to copies of the contentitem in other projects, content items stored within content managementsystem 106 may be linked to multiple projects but stored only oncewithin the system. Moreover, using links to associate content withprojects allows projects to link with any type of content that is storedanywhere reachable by a network connection (e.g., both internal andexternal to content management system 106). For example, project 340 caninclude links to content items (e.g., content item 422), collaborativecontent items (e.g., collaborative content item 424), content itemcollections (e.g. folder 426), and/or other projects (e.g., project428).

Linked content items, such as content item 422, can be stored by contentmanagement system 106, e.g., in association with a user account ofcontent management system 106. Linked content items can be any type ofcontent item such as documents, collaborative content items, text,audio, images, videos, webpages, executable files, binary files,placeholder files that reference other content items, or etc. In someimplementations, content items can be linked to a project based on amapping between an identifier of the content item in content managementsystem 106 and an identifier of the project. In some implementations, acontent item can be linked to a project by associating the project witha URL to the content item in the content management system 106 or with anetwork resource storing the content item external to content managementsystem 106. Linked content item collections, such as content itemcollection 426, can be linked to a project in a similar manner as othercontent items.

Linked collaborative content items, such as collaborative content item424, as discussed above, can be files that users can create and editusing a collaborative content items editor, and can containcollaborative content item elements such as a collaborative content itemidentifier, one or more author identifiers, text, media, collaborativecontent item attributes, interaction information, comments, sharingusers, etc. Collaborative content items can be linked to a project bystoring a mapping between the collaborative content item identifier andthe project. In some implementations, a project view can be provided ina web interface and selecting a collaborative content item linked to aproject can cause the web browser to load a collaborative content itemeditor to edit the selected collaborative content item.

Project 340 can include other projects, such as project 428. A firstproject can be included in a second project by storing a mapping betweenthe included project identifier and the project.

In some implementations, CMS client 242 can filter or sort content itemsin content area 420 according to various criteria. For example, contentarea 420 can include graphical element 430 for presenting recentlyupdated content items linked to project 340. When the user selectsgraphical element 430, CMS client 242 can present project content itemsthat have been updated since the user last viewed the selected project340. Alternatively, when the user selects graphical element 430, CMSclient 242 can present project content items that have been updatedduring a period of time prior to the current time. For example, CMSclient 242 can present content items that have been updated during thelast 24 hours, 3 days, etc. In some implementations, content items canbe organized by last update time when graphical element 430 is selected.

In some implementations, content area 420 can include graphical element432 for sorting content items alphabetically. For example, in responseto receiving a user selection of graphical element 432, CMS client 242can present content items in alphabetical order by name or identifier.

In some implementations, content area 420 can include graphical element434 for presenting external content linked to the selected project 340.For example, in response to receiving a user selection of graphicalelement 434, CMS client 242 can filter content items associated with theselected project so that only links to external content are presented incontent area 420.

In some implementations, content area 420 can include graphical element436 for presenting content items that are shared with the user. Forexample, in response to receiving a user selection of graphical element436, CMS client 242 can filter content items associated with theselected project so that only content items that were shared with theuser (e.g., content items that another user shared with the user,provided a content item link to the user, or had permissions set foraccess by the user) are presented in content area 420.

In some implementations, content area 420 can include graphical element438 for presenting content items that were created by the user. Forexample, in response to receiving a user selection of graphical element436, CMS client 242 can filter content items associated with theselected project so that only content items that were created ororiginated by the user are presented in content area 420.

In some implementations, content area 420 can include graphical element440 for presenting content items that were archived. For example,content management system 106 may archive content items that have notbeen accessed for a period of time. Content management system 106 mayarchive content items in response to user input indicating that acontent item should be archived. Archived content items may not begenerally accessible, however, in response to receiving a user selectionof graphical element 440, CMS client 242 can present archived contentitems associated with the selected project in content area 420.

Content management system can use other filtering and/or sortingcriteria to present content items linked to a project. For example,content management system 106 can filter and/or sort content itemspresented on GUI 400 based on which content items are currently beingaccessed, which user is currently accessing a corresponding contentitem, which content items are only accessible by project members, whichcontent items are accessible to any user, based on the date the contentitem was added to the project or to content management system 106,whether the content item has been pinned in the project (discussedbelow), which folder the content item is stored in or associated with,and/or which project members or content management system users haveseen or edited the content item.

In some implementations, GUI 400 can include face pile 450. For example,face pile 450 can include graphical elements representing some or allmembers of the selected project 340. As described above, memberrepresentations in face pile 450 can be ordered based on the member'srole in project 340 and/or the member's contributions to project 340.The number of users displayed in the face pile 450 can be limited to athreshold number of users from the ordered list of project members.

In some implementations, GUI 400 can include graphical element 452 foradding a new member to the project. For example, if the user is notcurrently a member of project 340, the user can select graphical element452 to join the project. In some implementations, project membership canbe contingent on project manager approval, in which case, in response toreceiving a user selection of graphical element 452, a notification canbe sent to the project manager indicating the user would like to joinproject 340. The project manager can then accept or reject the user'srequest to join the project. If the project manager approved the requestto join or if project manager approval is not necessary, the user canthen be added as a project member. If the user is currently a member ofproject 340, the user can select graphical element 452, which can bedisplayed with an alternate label such as “invite project members,” toinvite another user or users to join the project. In someimplementations, content management system 106 can recommend users for aproject. For example, when the user selects graphical element 452 toinvite another user to the project, CMS client 242 can receive a list ofsuggested users from content management system 106 and present the listof suggested users to the user. The list of suggested users can begenerated based on the user's previous interactions with the suggestedusers. The list of suggested users can be generated based on the user'sprevious interactions with the same content items as the suggested usersor with content items associated with the project.

In some implementations, GUI 400 can include graphical element 460 forcreating a new content item for the project. For example, the user canselect graphical element 460 to cause content management system 106 togenerate a new content item (e.g., collaboration content item, document,spreadsheet, image, etc.) for the project. After creating the newcontent item, content management system 106 can link the content item tothe project. Similarly, GUI 400 can include graphical element 462 forcreating a new folder for the project. The user can select graphicalelement 460 to cause content management system 106 to create a newfolder within the project. After creating the new folder, contentmanagement system 106 can link the new folder to the project.

In some implementations, GUI 400 can include graphical element 464 foradding a new content item to the project. For example, a user can selectgraphical element 464 to cause CMS client 242 to present GUI 500 of FIG.5 to add another project, content item, and/or external content (e.g.,URL) to the current project.

As described above, GUI 400 can include, in a single project view, avariety of project items associated with a project. For example, GUI 400can include representations of one or more project items including anyof: synchronization content items (e.g. content items managed by contentmanagement system 106 for synchronization with one or more clientdevices), content items stored externally to content management system106, collaborative content items (e.g. content items that can beprovided by content management system 106 through a web-basedcollaborative content item editor), other projects, content itemcollections, tasks (discussed below), member user accounts, or anycombination thereof.

FIG. 5 illustrates an example graphical user interface 500 for adding alink to a project. For example, CMS client 242 can present GUI 500 inresponse to receiving a user selection of graphical element 464 of FIG.4. GUI 500 can have similar features as GUI 400. However, in response toreceiving a selection of graphical element 464, GUI 500 can presentgraphical element 502 for receiving user input specifying a new contentitem for project 340.

In some implementations, graphical element 502 can include projectsuggestions. For example, when graphical element 502 is initiallypresented by CMS client 242, graphical element 502 can present suggestedprojects that content management system 106 has determined might berelevant to the user or to project 340. For example, content managementsystem 106 can determine projects to suggest based on natural languageprocessing analysis of content items linked to candidate projects todetermine similarities in subject matter (e.g., common keywords, commonphrases, etc.) between the currently selected project and a candidateproject suggestion. Content management system 106 can determine projectsto suggest based on whether the candidate project links to the same orsimilar content as the currently selected project (e.g., project 340).Content management system 106 can determine projects to suggest based onwhether the candidate project has some of the same project members asthe currently selected project. Content management system 106 candetermine projects to suggest based on whether the candidate project hassome members that regularly interact with (e.g., communicate, assigntasks, send comments, share calendar events, etc.) and/or share contentitems with members of the currently selected project. Generally, contentmanagement system 106 can determine whether there is some overlap inpeople (e.g., members), content, and/or subject matter between thecurrently selected project and a candidate project suggestion. If anoverlap exists, then content management system 106 can provide thecandidate project suggestion as a project suggestion to CMS client 242and CMS client 242 can present the project suggestion to the user ongraphical element 502. The user can select a project suggestion to addor link the suggested project to the current project 340.

In some implementations, graphical element 502 can include graphicalelement 506 for receiving search parameter input from the user. Forexample, graphical element 506 can be a text input box for specifyingsearch parameters (e.g., search strings) for performing a search ofcontent items in the currently selected project and/or throughoutcontent management system 106. For example, the user can selectgraphical element 506 and then use a keyboard or voice input to specifyone or more search parameters. For example, the search parameters caninclude strings that identify content items, projects, users, etc. Thesearch parameters can include uniform resource locators (URL) thatidentify network resources internal or external to content managementsystem 106. CMS client 242 can send the search parameters to contentmanagement system 106 and content management system 106 can returnsearch results (e.g., metadata) describing content items, projects,users, etc., that match the specified search parameters. CMS client 242can then present the search results on graphical element 502. The usercan select one or more of the search results to link the correspondingproject, content item, user, etc., to the current project.

FIG. 6A illustrates an example graphical user interface 600 for adding aparticular content item to a project. For example, GUI 600 can bepresented by CMS client 242 on a display of client device 240.

In some implementations, CMS client 242 can present a content item onGUI 600. The content item may or may not already be associated with aproject. GUI 600 can include graphical element 602 identifying thecontent item and may present area 608 showing contents of the contentitem.

In some implementations, GUI 600 can include graphical element 604 foradding the content item to a project. For example, while presenting thecontent item, CMS client 242 can receive user input selecting graphicalelement 604. In response to receiving the user selection of graphicalelement 604, CMS client 242 can present graphical element 610 (e.g., awindow, popup, overlay, etc.) presenting options for adding the contentitem to a project.

In some implementations, graphical element 610 can include recommendedprojects 618 and/or 620. For example, content management system 106 candetermine projects to suggest based on natural language processinganalysis of content items linked to candidate projects to determinesimilarities in subject matter (e.g., common keywords, common phrases,etc.) between the currently presented content item and a candidateproject suggestion. Content management system 106 can determine projectsto suggest based on whether the candidate project links to the same orsimilar content as the currently presented content item. Contentmanagement system 106 can determine projects to suggest based on whetherthe candidate project has project members that have edited, viewed,commented on, or otherwise interacted with the currently presentedcontent item. Generally, content management system 106 can determinewhether there is some overlap in people (e.g., members), content, and/orsubject matter between the currently presented content item and acandidate project suggestion. If an overlap exists, then contentmanagement system 106 can provide the candidate project suggestion as aproject suggestion to CMS client 242 and CMS client 242 can present theproject suggestion to the user on graphical element 610. The user canselect a project suggestion to add or link the currently presentedcontent item to the selected suggested project.

In some implementations, graphical element 610 can include graphicalelement 612 for searching for projects managed by content managementsystem 106. For example, graphical element 612 can be a text input boxfor specifying search parameters (e.g., search strings) for performing asearch for projects managed by content management system 106. Forexample, the user can select graphical element 612 and then use akeyboard or voice input to specify one or more search parameters. CMSclient 242 can send the search parameters to content management system106 and content management system 106 can return search results (e.g.,metadata) describing projects, that match the specified searchparameters. CMS client 242 can then present the search results ongraphical element 610. The user can select one or more of the searchresults to add the currently presented content item to the correspondingproject.

In some implementations, graphical element 610 can include graphicalelement 614 to create a new project. For example, in response toreceiving user input selecting graphical element 614, CMS client 242 canpresent GUI 650 of FIG. 6B.

FIG. 6B illustrates an example graphical user interface 650 for creatinga new project. For example, GUI 650 can be similar to GUI 600. However,at this point the user has selected graphical element 614 to create anew project and, in response to receiving the selection of graphicalelement 614, CMS client 242 has presented graphical element 660 forconfiguring a new project. Alternatively, CMS client 242 can presentgraphical element 660 for configuring a new project upon user selectionof graphical element 314.

In some implementations, graphical element 660 can include graphicalelement 662 for specifying an identifier for a new project. For example,graphical element 662 can be a text input control. The user can selectgraphical element 662 and provide text input to specify the name oridentifier for the new project.

In some implementations, graphical element 660 can present suggestedmembers for the new project. For example, when graphical element 660 ispresented by CMS client 242, graphical element 660 can presentsuggestions for members for the new project that content managementsystem 106 has determined might be relevant to the user, the newproject, or the currently presented content item. For example, contentmanagement system 106 can determine members to suggest based on naturallanguage processing analysis of content items associated with candidatesuggested members to determine similarities in subject matter (e.g.,common keywords, common phrases, etc.) between what the candidatesuggested members are working on and the content of the currentlypresented content item. Content management system 106 can determinecandidate members to suggest based on natural language processinganalysis of the project name 662 and content items associated withcandidate suggested members (e.g., common keywords, common phrases,etc.) to determine similarities in subject matter. Content managementsystem 106 can determine candidate members to suggest based on whetherthe candidate member belongs to some of the same projects as the user orhas worked on the same content items as the user. Content managementsystem 106 can determine candidate members to suggest based on whetherthe candidate member regularly interacts (e.g., communicates, assignstasks, sends comments, shares calendar events, etc.) with the user orinteracts with the currently presented content item (e.g., the contentitem is shared with candidate members). Generally, content managementsystem 106 can determine whether there is some overlap between (A) thecurrently presented content item, the user, and/or the new project, and(B) the candidate suggested members. If a threshold amount of overlapexists, then content management system 106 can provide the candidatemember suggestion as a member suggestion to CMS client 242 and CMSclient 242 can present the member suggestion to the user on graphicalelement 660. The user can select a member suggestion (e.g., membersuggestion 664, member suggestion 666, etc.) to add or remove thecandidate member from the new project. In some implementations,graphical element 660 can present representations of other(non-suggested) users that the user can select to add these users to thenew project. For example, these non-suggested users can be presented inresponse to a user entering a search string and the non-suggested usersmatching the entered search string.

In some implementations, graphical element 660 can present suggestedcontent items for the new project. For example, when graphical element660 is presented by CMS client 242, graphical element 660 can presentsuggestions for content items to include in the new project that contentmanagement system 106 has determined might be relevant to the user, thenew project, or the currently presented content item. For example,content management system 106 can determine candidate content items tosuggest based on natural language processing analysis of the candidatecontent items to determine similarities in subject matter (e.g., commonkeywords, common phrases, etc.) between the candidate content items andthe content of the currently presented content item. Content managementsystem 106 can determine candidate content items to suggest based onnatural language processing analysis of the project name 662 and contentof the candidate content items (e.g., common keywords, common phrases,etc.) to determine similarities in subject matter. Content managementsystem 106 can determine candidate content items to suggest based onwhether the candidate content items are associated with or linked tosome of the same projects as the user. Content management system 106 candetermine candidate content items to suggest based on whether the userregularly interacts (e.g., opens, edits, shares, etc.) with thecandidate content items. Generally, content management system 106 candetermine whether there is some overlap between (A) the currentlypresented content item, the user, and/or the new project, and (B) thecandidate content items. If a threshold amount of overlap exists, thencontent management system 106 can provide the candidate content itemssuggestions as a content item suggestion to CMS client 242 and CMSclient 242 can present the content item suggestion to the user ongraphical element 660. The user can select a content item suggestion(e.g., content item suggestion 668, content item suggestion 670, etc.)to add or remove the candidate content item from the new project.

In some implementations, content item suggestions and/or membersuggestions can be selected for a project by default. For example, whenCMS client 242 presents graphical element 660, each of the suggesteditems (e.g., suggested members, suggested content items, etc.) can bepre-selected for inclusion in the new project. Thus, if the user agreeswith the suggestions, the user can simply select graphical element 672to create a new project that includes the suggested items. If the userdoes not agree with some of the suggestions, the user can deselectsuggested items so that they are not included in the project and thenselect graphical element 672 to create a new project that includes anyremaining selected suggested items. When the user provides input tocreate the new project, content management system 106 can create a newproject that includes any selected suggested items and the currentlypresented content item (e.g., “Widget Specification” 602).

FIG. 7 illustrates an example graphical user interface 700 forpresenting suggested content for a project. For example, GUI 700 cancorrespond to GUI 400 described above. GUI 700 can be presented by CMSclient 242 on a display of client device 240 in response to the userselecting a project (e.g., project 340) from GUI 300.

In some implementations, GUI 700 can include content suggestion area702. For example, when a user selects project 340 from GUI 300, CMSclient 242 can present GUI 700 that includes project data associatedwith the selected project received from content management system 106.In some implementations, CMS client 242 can receive project data thatincludes suggested content for the currently selected project 340. Forexample, content management system 106 can analyze content managed bycontent management system 106 to determine which content items notalready associated with or added to the currently selected project mightbe relevant to the currently selected project. Content management system106 can then send the relevant content items, or metadata describing therelevant content items, to CMS client 242 to present on GUI 700 assuggested content.

In some implementations, content management system 106 can determinesuggested content for the currently selected project. For example,content management system 106 can determine content items to suggestbased on natural language processing analysis of candidate content itemsto determine similarities in subject matter (e.g., common keywords,common phrases, etc.) between (A) the candidate content items and (B)the name or description of the project and/or the content alreadyassociated with the currently selected project. Content managementsystem 106 can determine candidate content items to suggest based onwhether the candidate content items are associated with or linked tosome of the same projects as members of the currently selected project.Content management system 106 can determine candidate content items tosuggest based on whether the members of the currently selected projectregularly interact (e.g., recently edited, recently viewed, comment on,shared, etc.) with the candidate content items. Generally, contentmanagement system 106 can determine whether there is some overlapbetween the currently selected project, the user, and/or the candidatecontent items. If a threshold amount of overlap exists, then contentmanagement system 106 can provide the candidate content items as acontent item suggestion to CMS client 242 and CMS client 242 can presentthe content item suggestion to the user on graphical element 660. Theuser can select graphical element 706 corresponding to content itemsuggestion 704 to add the suggested content item to the currentlyselected project represented on GUI 700.

In some implementations, content management system 106 can adjust thepermissions associated with a content item when a content item is addedto a project. In some implementations, to add a content item to aproject, as described above, the user adding the content item to theproject must have write permissions with respect to the content item. Insome implementations, to add a content item to a project, the user mustalso be a member of the project. When the content item is added to theproject, content management system 106 can grant all members of theproject access to the content item. For example, content managementsystem 106 can grant read-only permissions or read-write permissionswith respect to the content item to members of the project to which thecontent item was added.

FIG. 8 illustrates an example graphical user interface 800 forpresenting pinned content items and/or related projects. For example,GUI 800 can correspond to GUI 400 of FIG. 4. GUI 800 can be presented inresponse to a user selecting a project from GUI 300 of FIG. 3.

In some implementations, GUI 800 can include pinned content area 810.For example, a user can select graphical element 802 corresponding tocontent item 428 to designate content item 428 as a pinned content itemwithin the selected project. For example, the user can select graphicalelement 802 to cause content management system 106 to present a menuthat allows the user to designate the corresponding project as a pinnedproject. Content management system 106 can store metadata for linkedcontent indicating whether a content item has been pinned within theproject. Pinned content items can be presented on pinned content area810 below banner 402 so that users and/or project members can quicklyaccess the pinned content. For example, pinned content can includeproject content items that project members consider to be importantcontent items for the project.

In some implementations, pinned content area 810 can include graphicalelement 812 and/or graphical element 814 representing a pinned contentitem for the project. For example, graphical element 812 can be apreview image of the pinned content item. Graphical element 814 can betext and/or icons identifying the pinned content item. The user canselect graphical element 812 and/or graphical element 814 to cause CMSclient 242 to present the corresponding content item on a display ofclient device 240.

In some implementations, GUI 800 can include related projects area 820.For example, related projects area 820 can include representations ofprojects that are related to the currently selected project, members ofthe currently selected project, and/or content items linked to thecurrently selected project. For example, when GUI 800 is presented byCMS client 242, related projects area 820 can present suggested projectsthat content management system 106 has determined might be relevant tothe user and/or relevant to the current project. For example, contentmanagement system 106 can determine projects to suggest based on naturallanguage processing analysis of content items linked to candidateprojects to determine similarities in subject matter (e.g., commonkeywords, common phrases, etc.) between the title, descriptions, orlinked content items of the currently selected project and a candidateproject suggestion. Content management system 106 can determine projectsto suggest based on whether the candidate project links to the same orsimilar content as the currently selected project (e.g., project 340).Content management system 106 can determine projects to suggest based onwhether the candidate project has some of the same project members asthe currently selected project. Content management system 106 candetermine projects to suggest based on whether the candidate project hassome members that regularly interact with (e.g., communicate, assigntasks, send comments, share calendar events, etc.) and/or share contentitems with members of the currently selected project. Generally, contentmanagement system 106 can determine whether there is some overlap inpeople (e.g., members), content, and/or subject matter between thecurrently selected project and a candidate project suggestion. If athreshold amount of overlap exists, then content management system 106can provide the candidate project suggestion as a project suggestion toCMS client 242 and CMS client 242 can present the project suggestion tothe user in related projects area 820 of GUI 800. The user can select aproject suggestion to add or link the suggested project to the currentproject 340.

FIG. 9 illustrates an example graphical user interface 900 forsuggesting content items and/or project members for a selected project.For example, GUI 900 can correspond to GUI 400 of FIG. 4. In someimplementations, CMS client 242 can receive from content managementsystem 106 content item suggestions and/or project member suggestionsfor the selected project 340. CMS client 242 can then present thecontent item suggestions and/or project member suggestions on GUI 900.

In some implementations, GUI 900 can include suggested content area 910.For example, content management system 106 can determine content itemsto suggest based on natural language processing analysis of candidatecontent items to determine similarities in subject matter (e.g., commonkeywords, common phrases, etc.) between the candidate content items andthe content already associated with the currently selected projectand/or the title and/or description of the selected project. Contentmanagement system 106 can determine candidate content items to suggestbased on whether the candidate content items are associated with orlinked to some of the same projects as members of the currently selectedproject. Content management system 106 can determine candidate contentitems to suggest based on whether the members of the currently selectedproject regularly interact (e.g., recently edited, recently viewed,comment on, shared, etc.) with the candidate content items. Generally,content management system 106 can determine whether there is someoverlap between the currently selected project, the user, and/or thecandidate content items. If an overlap exists, then content managementsystem 106 can provide the candidate content items as a content itemsuggestion to CMS client 242 and CMS client 242 can present the contentitem suggestion to the user in suggested content area 910 of GUI 900.The user can select graphical element 916 corresponding to content itemsuggestion 912 to add suggested content item 912 to the currentlyselected project represented on GUI 900.

In some implementations, GUI 900 can include suggested people area 920.For example, when GUI 900 is presented by CMS client 242, GUI 900 canpresent membership suggestions for the currently selected project thatcontent management system 106 has determined might be relevant to theuser or the currently selected project. For example, content managementsystem 106 can determine individual members, groups of members, and/orteams of members to suggest based on natural language processinganalysis of content items associated with the currently selected projectto determine similarities in subject matter (e.g., common keywords,common phrases, etc.) between content items the candidate suggestedmembers are working on, have recently worked on, created, etc., and thecontent items the currently selected project and/or the title and/ordescription of the currently selected project. Content management system106 can determine candidate members to suggest based on whether thecandidate member belongs to some of the same projects as other projectmembers or has worked on the same content items as other projectmembers. Content management system 106 can determine candidate membersto suggest based on whether the candidate member regularly interacts(e.g., communicates, assigns tasks, sends comments, shares calendarevents, etc.) with the user or other members of the currently selectedproject. Generally, content management system 106 can determine whetherthere is some overlap between (A) the currently selected project and/orthe user and (B) the candidate suggested members. If a threshold amountof overlap exists, then content management system 106 can provide thecandidate member suggestion as a member suggestion to CMS client 242 andCMS client 242 can present the member suggestion to the user insuggested people area 920 on GUI 900. The user can select graphicalelement 926 to add the corresponding suggested member to the currentlyselected project.

FIG. 10 is a flow diagram of an example process 1000 for managing aproject using links to project content. For example, content managementsystem 106 can manage projects for teams of users (e.g., projectmembers). The project data can be stored in a project database that mapsproject data to a project identifier for the project. In someimplementations, project content items (e.g., files, documents,collaborative content item, images, notes, etc.) can be associated withthe project using links to the project content items. For example, thecontent items can be stored separately (e.g., in a different storagelocation) than the project data 204. To associate content items with aproject, links (e.g., a content item, file, database entry, etc., thatreferences another content item, file, etc.) that reference the projectcontent items can be stored, e.g. in a database or project folder. Thus,content management system 106 does not have to replicate content itemswhen the same content item is associated with multiple differentprojects.

At step 1002, content management system 106 can identify a storagelocation for project data corresponding to a project. In someimplementations, the storage location can be one or more databases orother metadata storage or can be a particular project folder. In someimplementations, the project data can be a mapping of a projectidentifier for the project to content items, links, references,membership data, and/or other project data managed by content managementsystem 106. The project data can be shared with members of the projectsuch that the project members can access, modify, share, and otherwiseview or manipulate content items and/or other attributes associated withthe project and/or project folder.

At step 1004, content management system 106 can store references betweenthe project content and the project in the identified storage location.For example, when a project member adds a content item to the project,as described above, the content item can be associated with the projectusing a reference to the content item. For example, a link (e.g., acontent item, file, etc., that references another content item, file,etc.) that references the content item can be stored in the projectfolder. As another example, a database entry can be created joining anID of the content item with an ID of the project. Because the contentitem can be stored separately from the content item reference andbecause the reference merely refers to the content item, the referencecan be moved, deleted, etc., without affecting the corresponding contentitem. However, the members of the project can use the reference toaccess and modify the referenced content item using the appropriateeditor.

At step 1006, content management system 106 can store references betweenthe project members and the project in the identified storage location.For example, content management system 106 can store informationindicating which users of content management system 106 are members ofthe project.

At step 1008, content management system 106 can store project metadatadescribing project roles in the project data. For example, projectmembers and/or content management system 106 can define various projectroles for the project and assign the project roles to members of theproject. The role assignments can be stored in the project data.

At step 1010, content management system 106 can store project metadatadescribing activities of project members. For example, contentmanagement system 106 can monitor the behavior and/or activities ofproject members and/or other users of content management system 106.Content management system 106 can record or store information describingthe users' activities within content management system 106. For example,content management system 106 can store information describinginteractions (e.g., messaging, mentioning, sharing, collaborating on acontent item, etc.) between users, which content items a user viewsand/or edits, which projects a user has viewed or is a member, and/orwhich groups or teams a user is a member.

At step 1012, content management system 106 can generate a project viewthat includes representations of content linked to a project, projectmembers, project member roles and/or project member contributions. Forexample, content management system 106 can generate a project view(e.g., graphical user interface 400, 500, 700, 800, 900, etc.) thatpresents representations of content items linked to the project. Contentmanagement system 106 can generate a project view (e.g., graphical userinterface 400, 500, 700, 800, 900, etc.) that presents representationsof project members (e.g., face pile). Content management system 106 cangenerate a project view (e.g., graphical user interface 400, 500, 700,800, 900, etc.) that presents representations of project member rolesand/or contributions to the project (e.g., order in face pile).

When generating a project view, content management system 106 cangenerate links for project items, which can be any of: synchronizationcontent items (e.g. content items managed by content management system106 for synchronization with one or more client devices), content itemsstored externally to content management system 106 but that areaccessible through a network addresses, collaborative content items(e.g. content items that can be provided by content management system106 through a web-based collaborative content item editor), otherprojects, content item collections, tasks member user accounts, or anycombination thereof. Links to project items can be associated with theproject, e.g. by virtue of the data stored in blocks 1004-1010. Thegenerated links can be configured to have different actions whenactivated depending on project item type.

Links to collaborative content items can be configured to open thecollaborative content item, e.g. in a collaborative content item editor.Links to collaborative content items can also be alternatively selected(e.g. through a context menu) that provide other functions related tothe collaborative content item such as moving it, deleting it, pinningit, sharing it, etc.

Links to synchronization content items synchronized with or managed bythe content management system 106 can be configured to open a web viewof the content item; download the content item; or, if the content itemis downloaded or is already stored locally on the client, can cause thecontent item to be opened by an associated program or to be displayed ina folder, in the file system on the client device, that contains thecontent item.

Links to content items accessible through third-party network addressescan be configured to open the content item using the third-party networkaddresses, such as in a web browser or another application configured touse the network address.

Links to projects or other content item collections managed by thecontent management system 106 can be configured to open a project viewor web view of the content item collection, download the content itemcollection; or, if the content item collection is downloaded or isalready stored locally on the client, can cause the content itemcollection to be opened, e.g. by the file system on the client device.

Links to user accounts can be configured to enter the user name in asearch area of the project view or open a user details page for theuser. A user details page can include general user information or caninclude information about the user in relation to the current project,e.g. the user's role, content items the user has added to the project,content items of the project the user has opened or edited, etc.

The generated project view can also include elements indicating actionsrelating to the project or project items. For example, these elementscan include how project items have been shared (e.g., which projectmembers and/or other users, or a numerical count of users with access tothe content item), project level discussions or comments, and/or tasksor a task list that have been created for the project or in contentitems linked to the project.

At step 1014, content management system 106 can cause the project viewto be presented on display of a client device. For example, the projectview can be a web page, web GUI, etc., that can be presented by CMSclient 242 when CMS client 242 is a web browser running on the clientdevice. Content management system 106 can serve the project view to CMSclient 242 to cause CMS client 242 to present the project view on adisplay of the client device. Alternatively, content management system106 can send data for creating a project view to the client device whenCMS client 242 is a native client. CMS client 242 can then present anative GUI that presents the project view data.

FIG. 11A is a flow diagram of an example process 1100 for generatingmembership, content, and/or associated project suggestions for aselected project. For example, content management system 106 candetermine associations between users, content items, and/or projects andmake recommendations or suggestions with respect to linking contentitems, users, and/or projects to the selected project.

At step 1102, content management system 106 can receive a projectidentifier. For example, the user of client device 240 can interact withCMS client 242 to select a project to view on a GUI of CMS client 242.In some implementations, the user can provide input to CMS client 242 tocreate a new project. CMS client 242 can send information describing theselected project to content management system 106. For example, CMSclient 242 can send a project identifier to content management system106. In some implementations, all or part of process 1100 can beinitiated by an automated process, such as a process to identifysuggestions for existing project while a server's load is low. In theseimplementations, process 1100 may not be initiated by user action. Inthese implementations, project identifiers can be identified in avariety of ways such as by iterating through the existing projectidentifiers, selecting high-priority projects, or selecting projectsthat have not had suggestions determined in a threshold amount of time.

At step 1104, content management system 106 can determine candidateproject items for the identified project. For example, the candidateproject items can include all project items (e.g., user accounts,content items, tasks, etc.) managed by content management system 106.The candidate project items can include content items for which thecurrent user has permissions. For example, the user may need permissionsto access a candidate project item to add it to a project, thus onlyproject items for which a current user has sufficient permissions can beanalyzed to suggest to the user. The candidate project items can includecontent items which the current user has created. The candidate projectitems can include content items which the current user has opened,edited, or commented on, or performed one of these actions on within athreshold period of time. The candidate project items can includecontent items stored in particular locations or owned by certain users.Candidate project items that are other projects can be determined basedon project relevance, as determined by process 1130 described below. Thecandidate project items can be included in a collection of candidateproject items that can be analyzed for relevance to the identifiedproject, as described further below.

At step 1106, content management system 106 can select a candidateproject item from the candidate project items. For example, contentmanagement system 106 can select a candidate project item from thecollection of candidate project items to determine whether the selectedcandidate project item is relevant to the identified project. Contentmanagement system 106 can iterate through the candidate project items inthe collection to determine whether each candidate project item isrelevant to the identified project. When a candidate project item isselected from the candidate project items collection, the selectedcandidate project item can be removed from the collection.Alternatively, content management system 106 can maintain a counteridentifying a location in the collection corresponding to the currentiteration.

At step 1108, content management system 106 can compute a relevancescore for the selected candidate project item. For example, contentmanagement system 106 can determine a relevance score representing howrelevant the candidate project item is to the identified project. Therelevance score can be determined by process 1160 described below. Insome implementations, computing the relevance score can include loggingreasons for the resulting relevance score, such as project membership orcontent item editing/viewing overlap, content item overlap, subjectmatter overlap, or other factors described in relation to process 1160.

At step 1110, content management system 106 can determine whether therelevance score for the selected candidate project item is above arelevance threshold value. If the relevance score for the selectedcandidate project item is not above the relevance threshold, thenprocess 1100 can proceed to step 1112. If the relevance score for theselected candidate project item is above the relevance threshold, thenprocess 1100 can proceed to step 1114.

At step 1112, content management system 106 can determine whether thecandidate project item collection includes more candidate project itemsthat have not been analyzed. If the candidate project item collectionincludes more candidate project items, then content management system106 can continue process 1100 at step 1106. If the candidate projectitem collection does not include more candidate project items toanalyze, then content management system 106 can continue process 1100 atstep 1122.

At step 1114, content management system 106 can determine whether theselected candidate project item is another project. If the candidateproject item is another project, content management system 106 cancontinue process 1100 at step 1118. If the candidate project item is notanother project, content management system 106 can continue process 1100at step 1116. Process 1100 can make this distinction because, fornon-projects, process 1100 is only making a determination for whether itshould suggest the candidate project item to add to the identifiedproject. For other projects, process 1100 can make the furtherdetermination for whether it should suggest the candidate project tomerge with the identified project.

At step 1116, content management system 106 can add the selectedcandidate project item to a project item suggestions list. For example,the project item suggestion list can include user accounts, contentitems, tasks, projects, and/or other items that a user may wish to addto the identified project. After adding the selected candidate projectitem to the project item suggestions list, content management system 106can continue process 1100 at step 1112.

At step 1118, content management system 106 can determine whether therelevance score for the selected candidate project item is above a mergethreshold. For example, when the candidate project item is anotherproject, content management system 106 can determine whether therelevance score for the other project is so high that the identifiedproject and the other project should be merged into the same project.When the relevance score for the other project is not above the mergethreshold, content management system 106 can continue process 1100 atstep 1116. When the relevance score for the other project is above themerge threshold, content management system 106 can continue process 1100at step 1120.

At step 1120, content management system 106 can add the candidateproject item to a project merge list. For example, when the relevancescore for the other project is above the merge threshold, contentmanagement system 106 can add the other project to a project merge listso that content management system 106 can suggest that the projects inthe merge list with the identified project. After adding the selectedcandidate project item (e.g., the other project) to the merge list,content management system 106 can continue process 1100 at step 1112.

At step 1122, content management system 106 can present the suggestionslist and/or merge list. For example, content management system 106 cangenerate a project view for the identified project that includes theproject items included in the suggestions list and/or merge list. Insome implementations, suggestions provided in the suggestions list ormerge list can include the corresponding reasons for the suggestion,e.g., the reasons for the corresponding relevance score discussed above.In some implementations, projects on the merge list can be selected foreither merging with the identified project or for linking to theidentified project. Content management system 106 can send the projectview to CMS client 242 for presentation on a display of client device240.

FIG. 11B is a flow diagram of an example process 1130 for generating aproject suggestion for a selected content item. For example, contentmanagement system 106 can determine associations between the selectedcontent item and users, content items, and/or projects, and makerecommendations or suggestions for project to which the selected contentitem should be added.

At step 1132, content management system 106 can receive a content itemidentifier. For example, the user of client device 240 can interact withCMS client 242 to select and/or view a content item managed by contentmanagement system 106. While viewing the content item, the user canprovide input to CMS client 242 to add the selected content item to aproject, as described above with reference to FIG. 6A and FIG. 6B. Insome implementations, all or part of process 1130 can be initiated by anautomated process, such as a process to identify suggestions forexisting content items while a server's load is low. In theseimplementations, process 1130 may not be initiated by user action. Inthese implementations, content item identifiers can be identified in avariety of ways such as by iterating through the existing content items,selecting high-priority content items, or selecting content items thathave not had suggestions determined in a threshold amount of time.

At step 1134, content management system 106 can determine candidateprojects for the identified content item. For example, the candidateprojects can include all projects managed by content management system106. The candidate projects can include all projects relevant to thecurrent user of client device 240. For example, the candidate projectscan be relevant to a user (or user account) when the user has previouslyfavorited, shared, opened, edited, and/or commented on content itemsand/or project data associated with the candidate project. The candidateprojects can be relevant to a user when the user has been assigned arole in the candidate project or is active within a project. Forexample, a user's activity level within a candidate project can bemeasured based on number of content items the user has added to thecandidate project, number or volume of edits in content items linked tothe candidate project, number of other users the user has invited tojoin the candidate project, number of tasks created by the user relatedto the candidate project, and/or number or volume of comments createdwithin the candidate project. A project can be selected as a candidateproject when the user's activity level is above some threshold activitylevel and/or the activities were performed within some threshold periodof time. The candidate projects can be added to a collection ofcandidate projects. Each project in the collection of candidate projectscan be analyzed for relevance to the content item identified at step1132, as described further below.

At step 1136, content management system 106 can select a candidateproject. For example, content management system 106 can select acandidate project from the collection of projects generated at step1134. When content management system selects a candidate project fromthe collection, content management system 106 can remove the selectedcandidate project from the collection of candidate projects.Alternatively, content management system can maintain a counteridentifying a location in the collection corresponding to the currentiteration.

At step 1138, content management system 106 can compute a relevancescore for the selected candidate project. For example, contentmanagement system 106 can compute a relevance score that represents howrelevant the selected candidate project is to the identified contentitem, as described below with reference to process 1160. In someimplementations, computing the relevance score can include loggingreasons for the resulting relevance score, such as project membership orcontent item editing/viewing overlap, content item overlap, subjectmatter overlap, or other factors described in relation to process 1160.

At step 1140, content management system 106 can determine whether therelevance score for the selected candidate project is above a relevancethreshold value. When the relevance score is not above the relevancethreshold value, process 1130 can continue to step 1142. When therelevance score is above the relevance threshold value, process 1130 cancontinue to step 1144.

At step 1142, content management system 106 can determine whether thereare more candidate projects in the collection of candidate projects thathave not been iterated over. When there are more candidate projects inthe collection of candidate projects to analyze, process 1130 cancontinue to step 1136, as described above. When there are not morecandidate projects in the collection of candidate projects to analyze,process 1130 can continue to step 1146.

At step 1144, content management system 106 can add the selectedcandidate project to a project suggestions list. For example, when therelevance score for the selected candidate project is above a relevancethreshold value, indicating the user may want to add the content item tothe candidate project, content management system 106 can add theselected candidate project to a project suggestions list. Process 1130can then continue to step 1142 where content management system 106 candetermine whether there are more candidate projects in the collection ofcandidate projects.

At step 1146, content management system 106 can present the projectsuggestions list to the user. For example, content management system 106can generate a project selection view that allows the user to select aproject for the identified content item. Content management system 106can include the projects in the project suggestion list in the projectselection view as project recommendations. In some implementations,project recommendations provided in the project selection view caninclude the corresponding reasons for the recommendation, e.g., thereasons for the corresponding relevance score discussed above. The usercan select a recommended or suggested project to add the identifiedcontent item to the selected project.

FIG. 11C is a flow diagram of an example process 1160 for generating arelevance score between a project and a project item. For example,process 1160 can be performed by content management system 106 whenmaking suggestions for associating projects and project items (e.g.,user accounts, content items, etc.), as described above.

At step 1162, content management system 106 can receive a project itemidentifier and a project identifier. For example, when process 1160 isperformed as part of process 1100 described above, the projectidentifier can correspond to the project selected by the user and theproject item identifier can correspond to the selected candidate projectitem. As another example, when process 1160 is performed as part ofprocess 1130 described above, the project identifier can correspond tothe selected candidate project and the project item identifier cancorrespond to the content item selected by the user.

At step 1164, when the project item is a content item, contentmanagement system 106 can compute a relevance score for the contentitem. For example, the relevance score can be computed based on naturallanguage semantic similarity (e.g., looking for common keywords/phrases,vector closeness of vector representations of content items or contentitem portions, employing machine learning models to gauge similaritybetween language snippets). The relevance score can be computed based onsimilarities between the project description or title and content itemcontents (e.g., content item title, entire content item, content itemcomments, content item metadata). The relevance score can be computedbased on similarities between the content item contents and content itemcontents of content items previously associated with the project. Therelevance score can be computed based on analysis of associatedmulti-media in the content item and multi-media in content itemspreviously associated with the project (e.g., similarity betweenassigned tags or identified objects). The relevance score can becomputed based on sharing history of the content item with a relevantuser or a member of the project. The relevance score can be computedbased on access and/or edit history of the content item by a relevantuser or a member of the project.

At step 1166, when the project item is a user account, contentmanagement system 106 can compute a relevance score for the useraccount. The relevance score can be computed based on how often the useraccount appears (either as the sharer or recipient) in the sharinghistory of content items within a project. The relevance score can becomputed based on an overlap between identified characteristics of theuser account (e.g., sharing history, known team memberships,biographic/demographic characteristics) and characteristics of a projector of other project members. The relevance score can be computed basedon a number of calendar events matching calendar events of other projectmembers and/or calendar invites including other project members. Therelevance score can be computed based on a number of calendar eventsand/or invites that are related to the project or content itemsassociated with the project. The relevance score can be computed basedon overlap, in the same content items, of task assignments or at ‘@’mentions indicating the user account. The relevance score can becomputed based on level of similarity in content item access, edithistory, and/or commenting by the user account in content items relatedto the project.

At step 1168, when the project item is another project, contentmanagement system 106 can compute a relevance score for the otherproject. The relevance score can be computed based on natural languagesemantic similarity between (A) the project description, title, orcontent of project content items and (B) the project description, title,or content of project content items of the other project. The relevancescore can be computed based on overlap in content items associated withthe project and the other project. The relevance score can be computedbased on overlap in user membership between the project and the otherproject. The relevance score can be computed based on relevance scoresbetween content items in the project and the other project. Therelevance score can be computed based on relevance scores betweenmembers of the project and members of the other project.

At step 1170, content management system 106 can provide the relevancescore to the calling process. For example, after computing the relevancescore, content management system 106 can provide the relevance score toprocess 1100 and/or 1130, as described above. In some implementations,the reasons for how the relevance score was computed at block 164, 166,or 168 can be logged. These reasons can be selected based on how much ofan impact they had on the relevance score. For example, such reasonscould include “there are 167 content items that overlap between thesetwo projects,” “there is an 89% overlap between editors of this contentitem and project members of this project,” “there is a 75% overlap inproject membership between the first user and the second user,” “thereis a high degree of common phrases between the first and second contentitems,” etc. In some implementations, one or more of the reasons can bereturned with the relevancy score.

FIG. 12A and FIG. 12B show example possible system embodiments. The moreappropriate embodiment will be apparent to those of ordinary skill inthe art when practicing the present technology. Persons of ordinaryskill in the art will also readily appreciate that other systemembodiments are possible.

FIG. 12A illustrates a conventional system bus computing systemarchitecture 1200 wherein the components of the system are in electricalcommunication with each other using a bus 1205. Example system 1200includes a processing unit (CPU or processor) 1210 and a system bus 1205that couples various system components including the system memory 1215,such as read only memory (ROM) 1220 and random access memory (RAM) 1225,to the processor 1210. The system 1200 can include a cache of high-speedmemory connected directly with, in close proximity to, or integrated aspart of the processor 1210. The system 1200 can copy data from thememory 1215 and/or the storage device 1230 to the cache 1212 for quickaccess by the processor 1210. In this way, the cache can provide aperformance boost that avoids processor 1210 delays while waiting fordata. These and other modules can control or be configured to controlthe processor 1210 to perform various actions. Other system memory 1215may be available for use as well. The memory 1215 can include multipledifferent types of memory with different performance characteristics.The processor 1210 can include any general purpose processor and ahardware module or software module, such as module 1 1232, module 21234, and module 3 1236 stored in storage device 1230, configured tocontrol the processor 1210 as well as a special-purpose processor wheresoftware instructions are incorporated into the actual processor design.The processor 1210 may essentially be a completely self-containedcomputing system, containing multiple cores or processors, a bus, memorycontroller, cache, etc. A multi-core processor may be symmetric orasymmetric.

To enable user interaction with the computing device 1200, an inputdevice 1245 can represent any number of input mechanisms, such as amicrophone for speech, a touch-sensitive screen for gesture or graphicalinput, keyboard, mouse, motion input, speech and so forth. An outputdevice 1235 can also be one or more of a number of output mechanismsknown to those of skill in the art. In some instances, multimodalsystems can enable a user to provide multiple types of input tocommunicate with the computing device 1200. The communications interface1240 can generally govern and manage the user input and system output.There is no restriction on operating on any particular hardwarearrangement and therefore the basic features here may easily besubstituted for improved hardware or firmware arrangements as they aredeveloped.

Storage device 1230 is a non-volatile memory and can be a hard disk orother types of computer readable media which can store data that areaccessible by a computer, such as magnetic cassettes, flash memorycards, solid state memory devices, digital versatile disks, cartridges,random access memories (RAMs) 1225, read only memory (ROM) 1220, andhybrids thereof.

The storage device 1230 can include software modules 1232, 1234, 1236for controlling the processor 1210. Other hardware or software modulesare contemplated. The storage device 1230 can be connected to the systembus 1205. In one aspect, a hardware module that performs a particularfunction can include the software component stored in acomputer-readable medium in connection with the necessary hardwarecomponents, such as the processor 1210, bus 1205, display 1235, and soforth, to carry out the function.

FIG. 12B illustrates a computer system 1250 having a chipsetarchitecture that can be used in executing the described method andgenerating and displaying a graphical user interface (GUI). Computersystem 1250 is an example of computer hardware, software, and firmwarethat can be used to implement the disclosed technology. System 1250 caninclude a processor 1210, representative of any number of physicallyand/or logically distinct resources capable of executing software,firmware, and hardware configured to perform identified computations.Processor 1210 can communicate with a chipset 1260 that can controlinput to and output from processor 1210. In this example, chipset 1260outputs information to output 1265, such as a display, and can read andwrite information to storage device 1270, which can include magneticmedia, and solid state media, for example. Chipset 1260 can also readdata from and write data to RAM 1275. A bridge 1280 for interfacing witha variety of user interface components 1285 can be provided forinterfacing with chipset 1260. Such user interface components 1285 caninclude a keyboard, a microphone, touch detection and processingcircuitry, a pointing device, such as a mouse, and so on. In general,inputs to system 1250 can come from any of a variety of sources, machinegenerated and/or human generated.

Chipset 1260 can also interface with one or more communicationinterfaces 1290 that can have different physical interfaces. Suchcommunication interfaces can include interfaces for wired and wirelesslocal area networks, for broadband wireless networks, as well aspersonal area networks. Some applications of the methods for generating,displaying, and using the GUI disclosed herein can include receivingordered datasets over the physical interface or be generated by themachine itself by processor 1210 analyzing data stored in storage 1270or 1275. Further, the machine can receive inputs from a user via userinterface components 1285 and execute appropriate functions, such asbrowsing functions by interpreting these inputs using processor 1210.

It can be appreciated that example systems 1200 and 1250 can have morethan one processor 1210 or be part of a group or cluster of computingdevices networked together to provide greater processing capability.

For clarity of explanation, in some instances the present technology maybe presented as including individual functional blocks includingfunctional blocks comprising devices, device components, steps orroutines in a method embodied in software, or combinations of hardwareand software.

Any of the steps, operations, functions, or processes described hereinmay be performed or implemented by a combination of hardware andsoftware modules, alone or in combination with other devices. In anembodiment, a software module can be software that resides in memory ofa client device and/or one or more servers of a content managementsystem and perform one or more functions when a processor executes thesoftware associated with the module. The memory can be a non-transitorycomputer-readable medium.

In some embodiments the computer-readable storage devices, mediums, andmemories can include a cable or wireless signal containing a bit streamand the like. However, when mentioned, non-transitory computer-readablestorage media expressly exclude media such as energy, carrier signals,electromagnetic waves, and signals per se.

Methods according to the above-described examples can be implementedusing computer-executable instructions that are stored or otherwiseavailable from computer readable media. Such instructions can comprise,for example, instructions and data which cause or otherwise configure ageneral purpose computer, special purpose computer, or special purposeprocessing device to perform a certain function or group of functions.Portions of computer resources used can be accessible over a network.The computer executable instructions may be, for example, binaries,intermediate format instructions such as assembly language, firmware, orsource code. Examples of computer-readable media that may be used tostore instructions, information used, and/or information created duringmethods according to described examples include magnetic or opticaldisks, flash memory, USB devices provided with non-volatile memory,networked storage devices, and so on.

Devices implementing methods according to these disclosures can comprisehardware, firmware and/or software, and can take any of a variety ofform factors. Typical examples of such form factors include laptops,smart phones, small form factor personal computers, personal digitalassistants, and so on. Functionality described herein also can beembodied in peripherals or add-in cards. Such functionality can also beimplemented on a circuit board among different chips or differentprocesses executing in a single device, by way of further example.

The instructions, media for conveying such instructions, computingresources for executing them, and other structures for supporting suchcomputing resources are means for providing the functions described inthese disclosures.

Although a variety of examples and other information was used to explainaspects within the scope of the appended claims, no limitation of theclaims should be implied based on particular features or arrangements insuch examples, as one of ordinary skill would be able to use theseexamples to derive a wide variety of implementations. Further andalthough some subject matter may have been described in languagespecific to examples of structural features and/or method steps, it isto be understood that the subject matter defined in the appended claimsis not necessarily limited to these described features or acts. Forexample, such functionality can be distributed differently or performedin components other than those identified herein. Rather, the describedfeatures and steps are disclosed as examples of components of systemsand methods within the scope of the appended claims.

What is claimed is:
 1. A method comprising: receiving, by a content management system, an identification of a project and a potential project item; computing a relevance score that estimates a level of relevance between the potential project item and the project, wherein the potential project item is a content item and wherein the content management system generates the relevance score by performing one or more of: a comparison of words in the content item and a description or title of the project; a comparison of words in the content item and words in other content items associated with the project; a comparison of users who have accessed the content item and members of the project; or a comparison of users who have had the content item shared with them and members of the project, wherein each comparison measures a level of similarity between the project and the potential project item; determining that the relevance score is above a threshold; and in response to the determining that the relevance score is above the threshold, providing a suggestion to create an association between the potential project item and the project.
 2. The method of claim 1, wherein the relevance score is based on the comparison of words in the content item and the description or title of the project.
 3. The method of claim 1, wherein the relevance score is based on the comparison of words in the content item and words in other content items associated with the project.
 4. The method of claim 1, wherein the relevance score is based on the comparison of users who have accessed the content item and members of the project.
 5. The method of claim 1, wherein the relevance score is based on the comparison of users who have had the content item shared with them and members of the project.
 6. The method of claim 1, wherein the potential project item is a first potential project item and the relevance score is a first relevance score; and wherein the method further comprises: computing a second relevance score that estimates a level of relevance between a second potential project item and the project, wherein the second potential project item is a user account, wherein the second relevance score is based on one or more of: a comparison of two or more of: sharing history, identified user characteristics, calendar events, calendar invites, or a combination thereof, between the user account and other members of the project; determining that the second relevance score is above the threshold; and in response to the determining that the second relevance score is above the threshold, providing a suggestion to create an association between the second potential project item and the project.
 7. The method of claim 1, wherein the project is a first project, the potential project item is a first potential project item, and the relevance score is a first relevance score; and wherein the method further comprises: computing a second relevance score that estimates a level of relevance between a second potential project item and the first project, wherein the second potential project item is a second project, wherein the second relevance score is based on one or more of: natural language semantic similarity between a project description or title of the first project and a project description or title of the second project, overlap in content items associated with the first project and the second project; overlap in membership between the first project and the second project, or a combination thereof; determining that the second relevance score is above the threshold; and in response to the determining that the second relevance score is above the threshold, providing a suggestion to create an association between the second potential project item and the first project.
 8. A non-transitory computer-readable medium including one or more instructions that, when executed by a computing system, cause the computing system to perform operations comprising: receiving, by a content management system, an identification of a content item; selecting, by the content management system, a set of potential projects; computing a relevance score that estimates a level of relevance between a selected potential project, of the set of potential projects, and the content item, wherein the relevance score is based on one or more of: a comparison of words in the content item and a description or title of the potential project; a comparison of words in the content item and words in content items associated with the potential project; a comparison of logged user accesses to the content item and members of the potential project; or a comparison of users the content item has been shared with or shared by and members of the potential project, wherein each comparison measures a level of similarity between the project and the potential project item; determining that the relevance score is above a threshold; and in response to the determining that the relevance score is above the threshold, providing a suggestion to create an association between the potential project and the content item.
 9. The non-transitory computer-readable medium of claim 8, wherein the relevance score is based on the comparison of words in the content item and the description or title of the potential project.
 10. The non-transitory computer-readable medium of claim 8, wherein the relevance score is based on the comparison of words in the content item and words in content items associated with the potential project.
 11. The non-transitory computer-readable medium of claim 8, wherein the relevance score is based on the comparison of logged user accesses to the content item and members of the potential project.
 12. The non-transitory computer-readable medium of claim 8, wherein the relevance score is based on the comparison of users the content item has been shared with or shared by and members of the potential project.
 13. The non-transitory computer-readable medium of claim 8, wherein the content item is a collaborative content item; and wherein the providing the suggestion to create the association between the potential project and the collaborative content item causes the suggestion to be provided in a web browser-based collaborative content item editor, on a client device, that is displaying the collaborative content item.
 14. The non-transitory computer-readable medium of claim 13, wherein the web browser-based collaborative content item editor provides the suggestion to create the association between the potential project and the collaborative content item with an option to create a new project to add the collaborative content item to.
 15. A content management system comprising: one or more processors; and a non-transitory computer-readable medium including one or more instructions that, when executed by one or more processors, cause the content management system to perform operations comprising: receiving, by the content management system, an identification of a project and an identification of a potential collaborative content item; computing a relevance score that estimates a level of relevance between the potential collaborative content item and the project by measuring a level of similarity between the potential collaborative content item and the project; determining that the relevance score is above a threshold; and in response to the determining that the relevance score is above the threshold, providing a suggestion to create an association between the potential collaborative content item and the project.
 16. The content management system of claim 15, wherein the relevance score is based on a comparison of words in the potential collaborative content item and a description or title of the project.
 17. The content management system of claim 15, wherein the relevance score is based on a comparison of words in the potential collaborative content item and words in other content items associated with the project.
 18. The content management system of claim 15, wherein the relevance score is based on a comparison of editor or access history by users to the potential collaborative content item and members of the project.
 19. The content management system of claim 15, wherein the relevance score is based on a comparison of logged user sharing history of the potential collaborative content item and members of the project.
 20. The content management system of claim 15, wherein the suggestion to create the association between the potential collaborative content item and the project is provided in a project view, configured to be displayed through a web browser on a client device; and wherein the project view includes the suggestion as a representation of the potential collaborative content item in conjunction with other collaborative content items associated with the project. 